const path = require('path');
const webpack = require('webpack');
function resolve(dir) {
	return path.join(__dirname, '..', dir);
}
module.exports = {
	entry: './src/index.js',
	output: {
		path: path.resolve(__dirname, './lib'),
		publicPath: '/lib/',
		filename: 'index.js',
		library: 'CommonComponent',
		libraryTarget: 'umd',
		umdNamedDefine: true,
	},
	module: {
		rules: [
			{
				test: /\.(js|vue)$/,
				loader: 'eslint-loader',
				enforce: 'pre',
				include: [resolve('src'), resolve('test')],
				options: {
					formatter: require('eslint-friendly-formatter'),
				},
			},
			{
				test: /\.vue$/,
				loader: 'vue-loader',
			},
			{
				test: /\.less$/,
				loader: 'style-loader!css-loader!less-loader',
			},
			{
				test: /\.js$/,
				loader: 'babel-loader',
				exclude: /node_modules/,
			},
			{
				test: /\.(png|jpg|gif|svg)$/,
				loader: 'file-loader',
				options: {
					name: '[name].[ext]?[hash]',
				},
			},
		],
	},
	resolve: {
		alias: {
			vue$: 'vue/dist/vue.esm.js',
		},
	},
	externals: {
		vue: {
			root: 'Vue',
			commonjs: 'vue',
			commonjs2: 'vue',
			amd: 'vue',
		},
	},
	performance: {
		hints: false,
	},
	devtool: '#source-map',
};

module.exports.plugins = (module.exports.plugins || []).concat([
	new webpack.DefinePlugin({
		'process.env': {
			NODE_ENV: '"production"',
		},
	}),
	new webpack.optimize.UglifyJsPlugin({
		sourceMap: true,
		compress: {
			warnings: false,
		},
	}),
	new webpack.LoaderOptionsPlugin({
		minimize: true,
	}),
]);
